Known spreadsheet user interfaces typically expose all or most of the cells that are contained in a spreadsheet. However, for a variety of reasons it is sometimes desirable to restrict users' access to only those cells of the spreadsheet containing formulas that the user needs to verify or change. There are several reasons for this, including: to protect proprietary formulas, to restrict modifications to values contained in selected cells, to allow for positioning of cell content to be grouped according to functionality, and to simplify novice users' view of a spreadsheet.
Existing PC-based spreadsheet software typically does too little to facilitate creation or customization of a user interface, or requires too much of the user to solve this problem. The spreadsheet author can arrange the cells to very carefully expose selected regions of the spreadsheet to the user. The remainder of the spreadsheet (rows and or columns) can then be hidden. But this makes modifying the spreadsheet very tedious. Furthermore, unrelated cells may need to be placed adjacent to each other in the spreadsheet so that they are visible at the same time, which can create a confusing interface. Also, using this approach, it is not possible to guide a person through a step-by-step process to enter data.
Another approach is to utilize a scripting or programming language to construct a form, or template, for entering data by a user. This technique allows for complete control and customization of the interface that the user sees, but it requires the spreadsheet designer or the spreadsheet user to perform actual programming in a language such as Visual Basic or Java. An application developer most likely is not a software programmer. Therefore, coordination with a software developer is needed to create the interface for the spreadsheet.
Another problem with current solutions to custom interface creation is that they are difficult and prone to redesign. A simple addition to a requirement can cause a major rework to the spreadsheet front-end or lay out. Likewise, if a software developer is involved, further coordination is necessary to effect appropriate modifications to the programming code.